﻿<pre>
知识点一：函数的嵌套或叫嵌套函数
	规定：函数中继续定义函数称为函数的嵌套。
	示例如下：理论上函数可以无限制嵌套，并且内层函数必须在外层函数里面调用，不能再外层函数之外被访问。

	<script>
		function fnA(){
			function fnB(){
				function fnC(){
					document.write('fnC');
				}
				fnC();
				document.write('fnB');
			}
			fnB();
			document.write('fnA');		
		}
		fnA(); 
		//fnB();	//调用无效，无法访问到函数内部的函数
	</script>


知识点二：特殊的嵌套函数
	<script>
		var fn = null; 
		function  A(){
			function  B(){
				document.write('BB');
			}
 			fn = A;
		}
		A(); 
		fn();	//输出：BB, 注意必须在A调用后
	</script>

知识点三:返回嵌套的函数
	<script>
		var fn = null; 
		var i = 1;
		function  A(){
			var i = 2;
			return function  B(){
				document.write(i);
			} 
		}
		fn = A(); 
		fn();	//结果是1还是2？
		A()();  //这样写可以吗？
	</script>
	

知识点四：闭包的概念
	闭包：一个函数可以访问另外一个函数的作用域
	实现手段：函数嵌套
	应用场景：Tab切换效果，幻灯片多级联动等。
	
	请分析以下几个案例代码的结果：
	<script> 
		var i = 1;
		function O(){
			document.write(i);
		}
		function  A(){
			var i = 2;
			return function  B(){
				document.write(i);
			} 
			O();
		} 
		A()();   
	</script>
	
	题目二：请问下面代码会依次输出什么
	<script>
		var i=1;
		function A(){
			i = 2;	
			function B(){
				var i=3;
				console.log(i);
			}
			B();
			console.log(i);
		}
		A();
		console.log(i);


	</script>
	

</pre>